package com.example.design.bilibili.decrator;

import java.io.FilterInputStream;

/**
 * 装饰着模式
 */
public class Client {

    public static void main(String[] args) {

        //装饰者模式下的订单 2份巧克力+一份牛奶的LongBlack

        //点一份longblack
        Drink order = new LongBlack();
        System.out.println("费用 ="+order.cost());
        System.out.println("描述="+order.getDes());
        System.out.println();
        //2、order 加入一份牛奶
        order = new Milk(order);
        System.out.println("order 加入一份牛奶 费用 ="+order.cost());
        System.out.println("order 加入一份牛奶 描述 ="+order.getDes());
        System.out.println();
        //3、order加入一份巧克力
        order = new Chocolate(order);
        System.out.println("order 加入一份牛奶，一份巧克力 费用 ="+order.cost());
        System.out.println("order 加入一份牛奶，一份巧克力 描述 ="+order.getDes());
        System.out.println();

        //4、order加入一份巧克力
        order = new Chocolate(order);
        System.out.println("order 加入一份牛奶，两份巧克力 费用 ="+order.cost());
        System.out.println("order 加入一份牛奶，两份巧克力 描述 ="+order.getDes());
        System.out.println("===============================================");

        Drink order2 = new DeCaf();
        System.out.println("order2 无因咖啡 费用="+order.cost());
        System.out.println("order2 无因咖啡 描述="+order.getDes());
        System.out.println();
        order2 = new Milk(order2);
        System.out.println("order2 无因咖啡 加入一份牛奶费用="+order.cost());
        System.out.println("order2 无因咖啡 加入一份牛奶描述="+order.getDes());

    }
}
